Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Ορισμός του Entity Framework

Îåêßíçóå áðü ôï ìÝëïò Dimitris Papadimitriou. Τελευταία δημοσίευση από το μέλος Panagiotis Kefalidis στις 20-01-2009, 13:39. Υπάρχουν 9 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  20-01-2009, 10:20 47759

    Ορισμός του Entity Framework

    Κάποια στιγμή κατά τη διάρκεια του τελευταίου dnz event αναφέρθηκε από τον καλό μου φίλο τον Palladin ότι το Entity Framework λανσάρεται (προσοχή στη λέξη) από την Microsoft ως ένα conseptual layer-infrastructure για να προσπελάσει κανείς οποιοδήποτε είδος πληροφορίας και όχι μόνο σχεσιακές βάσεις. Έριξα μια ματιά στον ορισμό του και είναι ο εξής (πηγή):
    "The ADO.NET Entity Framework is designed to enable developers to create data access applications by programming against a conceptual application model instead of programming directly against a relational storage schema. The goal is to decrease the amount of code and maintenance required for data-oriented applications."
    Σε αυτόν λοιπόν δεν φαίνεται κάτι τέτοιο. Νίκο που το άκουσες εσύ;

    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  20-01-2009, 10:44 47761 σε απάντηση της 47759

    Απ: Ορισμός του Entity Framework

    Δεν νομίζω ότι έχει νόημα να κοιτάμε τις διάφορες περιγραφές, καθώς είναι γνωστό ότι το EF υποστηρίζει διάφορους provider και όχι μόνο βάσεις. Από εκεί και πέρα, κάθε blog post που αναφέρεται σε αυτό έχει και μία διαφορετική περιγραφή. Δεν σημαίνει ότι είναι όλες λάθος, απλά ο κάθε αρθρογράφος περιγράφει το ίδιο πράγμα με διαφορετικό τρόπο. Η ουσία είναι ότι το EF κάνει map την πηγή του σε ένα conceptual model και μετά από το conceptual model κάνει map σε κλάσεις. Η καρδιά του είναι το conceptual model και το διπλό mapping είναι που του κάνει να διαφέρει από όλα τα άλλα ORM.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  20-01-2009, 11:55 47762 σε απάντηση της 47761

    Απ: Ορισμός του Entity Framework

    Παναγιώτη σε ευχαριστώ για την συνεισφορά σου αλλά η ερώτηση δεν είναι αν έχει νόημα να κοιτάμε τις περιγραφές. Ήταν αν γνωρίζει κάποιος και κυρίως ο Νίκος με τον οποίο το συζήτησα, κάποια Microsoft πηγή που να αναφέρει επίσημα ή ανεπίσημα το EF ως generic mapper και όχι σαν ORM. Το αν έχει νόημα η ερώτηση άσε να το κρίνει αυτός που ρωτάει.

    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  20-01-2009, 13:00 47764 σε απάντηση της 47762

    Απ: Ορισμός του Entity Framework

    Υποθέτω ότι ο Νίκος θα το είδε/άκουσε κάπου μεταξύ των χιλιάδων post και λογικά αναφέρετε στο "much larger vision" το οποίο περιγράφει ο Danny Simmons σε ένα απο τα post του στο blog του όταν απαντάει στο ερώτημα "Why use the Entity Framework". Θεωρητικά θα μπορούσε να είναι κάτι παραπάνω απο ένα "απλό" ORM αλλά θα πρέπει να ξέρουμε το "Much larger vision" των designer/developer του για να ήμαστε... "σίγουροι".
    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
  •  20-01-2009, 13:03 47765 σε απάντηση της 47762

    Απ: Ορισμός του Entity Framework

    Η παράγραφος που παραθέτεις προέρχεται νομίζω από την αρχή του Overview του Entity Framework και έχει στόχο να εξηγήσει και όχι να ορίσει τί είναι το Entity Framework. Αν θέλεις ένα πιό τυπικό ορισμό, μπορείς να δεις τη δημοσίευση (The ADO.NET Entity Framework: Making the Conceptual Level Real) που έκανε το Δεκέμβρη του 2006 η ομάδα του Entity Framework στο ACM SIGMOD (Special Interest Group for Management Of Data). Μία ακαδημαϊκή δημοσίευση είναι πολύ πιο αυστηρή από ένα overview. Παραθέτω μερικά τμήματα όπου φαίνεται ξεκάθαρα ότι η φιλοσοφία του EF είναι να εισαχθεί ένα conceptual level στο οποίο θα στηριχθούν ξεχωριστά mappings προς το data store και προς το domain model.

    Η ομάδα του EF βλέπει πολύ πέρα από την σύνδεση domain model με βάση. Για παράδειγμα, το Facebook χρησιμοποιεί ένα απλοποιημένο API με βάση ένα απλό domain model για να ανοίξει τα δεδομένα του σε εξωτερικές εφαρμογές με απλό τρόπο. Το ADO.NET Data Services μπορεί να κάνει το ίδιο για το .ΝΕΤ βασιζόμενο στο conceptual model του Entity Framework.

    Τα bold παρακάτω είναι δικά μου.

    Abstract

    This paper describes the ADO.NET Entity Framework, a platform for programming against data that raises the level of abstraction from the logical (relational) level to the conceptual (entity) level, and thereby significantly reduces the impedance mismatch for applications and data services such as reporting, analysis, and replication. The conceptual data model is made real by a runtime that implements an extended relational model (the Entity Data Model aka the EDM), that embraces entities and relationships as first class concepts; a query language for the EDM; a comprehensive mapping engine that translates from the conceptual to the logical (relational) level, and a set of model-driven tools that help create entity-object, object-xml, and entity-xml transformers.

    ...

    Introduction

    ...

    We argue that modern applications and data services need to target a higher-level conceptual model based on entities and relationships rather than the relational model and that such a conceptual model needs to be implemented concretely in a data platform.

    ...

    4.4.1 Build the conceptual model

    ...

    The first step is to define one’s conceptual model.

    ...

    4.4.2 Apply the mapping

    ...

    After we define the EDM conceptual model, we identify a target store, and then map the conceptual model to the target store’s logical schema model.

    ...

    4.4.3 Automatically Generated Classes

    ...

    Having the conceptual level is indeed sufficient for many applications as it provides a domain model that is live within the context of a comfortable pattern (ADO.NET commands, connections and data readers) and allows for late bound scenarios. Many applications, however, prefer an object programming layer (See Figure 5). This can be facilitated through code generation driven from the EDM description. For increased flexibility and data independence between the object and conceptual level, a mapping may be defined between classes and the conceptual model. The mapping between classes and the conceptual model is a straightforward member-wise mapping. This enables applications built against these classes to be reused against other versions of the the conceptual model, provided a legal map can be defined.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  20-01-2009, 13:10 47767 σε απάντηση της 47765

    Απ: Ορισμός του Entity Framework

    Ρε Παναγιώτη, τι μανία είναι αυτή να τα βλέπεις όπως θες αυτά που γράφουμε Stick out tongue. Δεν το έδωσα σαν ορισμό, αλλά σαν αναφορά στο "much larger vision" το οποίο πιθανόν να συμπεριλαμβάνει και το κομμάτι που συζητάμε.

    Πάντς, σύμφωνα με το post σου αφήνετε να εννοηθεί ακριβώς αυτό το πράγμα, ότι δεν είναι μόνο για βάσεις..


    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
  •  20-01-2009, 13:20 47768 σε απάντηση της 47765

    Απ: Ορισμός του Entity Framework

    Υ.Γ. Το ότι ο designer του EF ξεκινάει ανάποδα, και σου κρύβει εντελώς τα δύο mappings, είναι καθαρά σύμπτωμα του v1 το οποίο θα διορθωθεί στο μέλλον.

    "One of the most painful omissions from the Entity Framework V1 was Model First, which basically means creating a conceptual 'model first' and then deriving a storage model, database and mappings from that. "

    Ο Παναγιώτης έχει απόλυτο δίκιο. Πρέπει να καταλάβει κανείς το "much larger vision" και πως αυτό ξεφεύγει από τα στενά πλαίσια κάθε κατηγορίας εφαρμογής. Η αλήθεια είναι ότι η Microsoft δεν έχει κάνει και την καλύτερη δουλειά στο να μεταδώσει αυτό το vision - το οποίο είμαι σίγουρος ότι εξελίσσεται συνεχώς! Για παράδειγμα, στη σχεδίαση του v2 αποφασίστηκε να ΜΗΝ υπάρξει προκαθορισμένος μηχανισμός για επικοινωνία μεταξύ των tiers αλλά να υπάρχουν οι μηχανισμοί με τους οποίους οι developers θα υλοποιήσουν τη δική τους μορφή επικοινωνίας (Datasets, DTOs ή REST).

    Είναι τρελοί οι Microsoftικοί? Όχι ακριβώς. Το EF θα χρησιμοποιηθεί από εντελώς διαφορετικές εφαρμογές, από single-server web applications μέχρι cloud εφαρμογές επάνω από το Microsoft Azure ή το Amazon SimpleDB και εφαρμογές κλίμακας FaceBook. Δεν είναι δυνατόν ένας μηχανισμός να δουλέψει σε όλες τις περιπτώσεις, γι αυτό και έγινε η επιλογή αυτή. Όσοι όμως επικεντρώνονται στη δημιουργία ORMs ή application frameworks άρχισαν να κατηγορούν αυτή την επιλογή ως "the easy way out".

     

    Υ.Υ.Γ. Διαβάζω τώρα το κεφάλαιο για την αρχιτεκτονική του Facebook στο βιβλίο "Beautiful Architecture" του Διομήδη Σπινέλλη και Γιώργου Γούσιου, γραμμένο από τον ίδιο το David Fetterman. Πραγματικά, μόνο όταν διάβασα για το πως το Facebook άνοιξε τα δεδομένα του προς εξωτερικές εφαρμογές κατάλαβα ποιό είναι το νόημα των Data Services!
    Εντελώς συμπτωματικά, την ίδια μέρα που βγήκε το βιβλίο, βγήκε και η νέα πλατφόρμα του Facebook.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  20-01-2009, 13:30 47769 σε απάντηση της 47767

    Απ: Ορισμός του Entity Framework

    Panagiotis Kefalidis:

    Ρε Παναγιώτη, τι μανία είναι αυτή να τα βλέπεις όπως θες τα αυτά που γράφουμε Stick out tongue. Δεν το έδωσα σαν ορισμό, αλλά σαν αναφορά στο "much larger vision" το οποίο πιθανόν να συμπεριλαμβάνει και το κομμάτι που συζητάμε.

    Πάντς, σύμφωνα με το post σου αφήνετε να εννοηθεί ακριβώς αυτό το πράγμα, ότι δεν είναι μόνο για βάσεις..

    Concurrency violation! Το post που έκανα με το SIGMOD το έγραψα πριν δω το δικό σου post. Όταν έλεγα για ορισμό αναφερόμουν στο πρώτο post του Δημήτρη. Η απάντηση στο δικό σου ήρθε αργότερα.

    Από την άλλη, αυτό θα είναι αφορμή για μία ωραία συζήτηση για το πως δουλεύουν συστήματα όταν δεν υπάρχουν εγγυήσεις για το concurrency και τη σειρά των updates, γιατί όχι μόνο έρχονται, αλλά είναι ήδη εδώ (MS Azure Table Service, Amazon SimpleDB)


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  20-01-2009, 13:33 47770 σε απάντηση της 47759

    Απ: Ορισμός του Entity Framework

    Καλησπέρα Δημήτρη.

    Αυτό που είχα πει είναι ότι το EF δεν λανσάρεται μονο ως ένας Ο/R mapper...

    Ο Ο/R mapper που έρχεται μέσα στο κουτί είναι ένα από τα πολλά εν δυνάμει implementations. Οι περισσότεροι δεν δίνουν βάσει στο Entity (γιατί άραγε η MS το είπε Entity Framework και όχι κάτι άλλο? p.x ObjectSpaces) και το βλέπουν ως απλά άλλον έναν Ο/R mapper...(Όπως είπα το Entity Data Model έχει πολύ ενδιαφέρον ως Conceptual Φορμαλισμός. Όσοι με ξέρουν ... γνωρίζουν ποσο μου αρέσουν οι όμορφες ιδέες)

    To mapping γίνετε ανάμεσα στο conseptual shema και στο relational storage schema... Τώρα για το data store είναι αλλο θέμα, μπορεί να είναι relational database ή οτιδήποτε άλλο.

    Επίσεις τα Entities μπορούν να γινουν map "προς τα έξω" σε διάφορες μορφές. p.x Objects, WebServices...

    Δείτε τα παρακάτω links

    http://weblogs.asp.net/fbouma/archive/2008/08/20/quot-the-entity-data-model-is-much-bigger-than-just-an-orm-quot-stephen-forte.aspx

    http://weblogs.asp.net/fbouma/archive/2008/11/21/baby-sitter-framework-2-0-change-tracking-in-the-ef-v2-it-s-still-your-problem.aspx

    Φυσικά ο Frans Bouma θέλει να προωθήσει το προϊόν του... αλλα νομίζω ότι λέει αλήθειες. Να τονίσω ότι δεν είμαι χρηστης του LLBLGEN Pro.

     

     


    Palladinos Nick
    Software Engineer
    -----------------------
    The limits of my language mean the limits of my world. (Ludwig Wittgenstein)
  •  20-01-2009, 13:39 47771 σε απάντηση της 47769

    Απ: Ορισμός του Entity Framework

    Αχαχαχαχα, οκ!

    Ναι έχεις δίκιο, είναι ευκαιρία για συζήτηση αυτό..


    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems